﻿using AutoMapper;
using RestApp.UI.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace RestApp.UI.Models
{
	public class User : IMvcView<RestApp.BusinessLogic.User>
	{
		public int Id { get; set; }

		[Display(Name="Имя сотрудника")]
		[Required(ErrorMessage = "*")]
		public string FirstName { get; set; }

		[Display(Name="Фамилия сотрудника")]
		[Required(ErrorMessage = "*")]
		public string LastName { get; set; }

		[Display(Name="Отчество сотрудника")]
		[Required(ErrorMessage = "*")]
		public string MiddleName { get; set; }

		public virtual string Password { get; set; }

		[Required(ErrorMessage = "*")]
		[Display(Name="Логин входа")]
		public string Login { get; set; }

		[Display(Name="Стоимость одного часа работы")]
		[Required(ErrorMessage = "*")]
		[Range(typeof(decimal), "5,0", "999999999999999999", ErrorMessage = "Неверное значение поля. В качестве разделителя дробной и целой части используется запятая")]
		public decimal Salary { get; set; }

		[Display(Name="Дата приема на работу")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
		[Required(ErrorMessage="*")]
		public DateTime StartWorkDate { get; set; }

		[Display(Name="Дата рождения")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
		public Nullable<System.DateTime> DateBirth { get; set; }

		[Display(Name="Роль сотрудника в системе")]
		public int IdRole { get; set; }

		[Display(Name="Должность сотрудника")]
		public int IdJobPost { get; set; }

		[Display(Name = "Начальник")]
		public int IdBossJobPost { get; set; }

		public string FullName
		{
			get
			{
				return string.Format("{0} {1} {2}", LastName, FirstName, MiddleName);
			}
		}

		public virtual ICollection<WorkGraphic> WorkGraphics { get; set; }

		public virtual BusinessLogic.User ToBusinessEntity()
		{
			return Mapper.Map<BusinessLogic.User>(this);
		}
	}
}